package appctl

import (
	"blog/dao"
	"blog/model"
	"blog/service"
	"github.com/labstack/echo/v4"
	"github.com/zxysilent/utils"
	"strconv"
)

func ArticleGet(ctx echo.Context) error {
	ipt := &model.IptId{}
	err := ctx.Bind(ipt)
	if err != nil {
		return ctx.JSON(utils.ErrIpt("输入有误", err.Error()))
	}
	mod := service.ArticleService.GetArticle(ipt.Id)
	//if !has {
	//	return ctx.JSON(utils.ErrOpt("文章不存在"))
	//}
	return ctx.JSON(utils.Succ("succ", mod))
}

func ArticlePage(ctx echo.Context) error {
	page := &model.ArticlePageParam{}
	err := ctx.Bind(page)
	if err != nil {
		return ctx.JSON(utils.ErrIpt("输入有误", err.Error()))
	}
	article := page.Article
	values, total, _ := dao.ArticleDao.ArticlePage(page.Pi, page.Ps, &article)
	return ctx.JSON(utils.Succ("succ", model.PageDTO{Values: values, Total: total}))
}

func ArticleList(ctx echo.Context) error {
	param := &model.Article{}
	_ = ctx.Bind(param)
	values, _, _ := dao.ArticleDao.ArticlePage(1, 1000, param)
	return ctx.JSON(utils.Succ("succ", values))
}

func ArticleAdd(ctx echo.Context) error {
	article := &model.Article{}
	if err := ctx.Bind(article); err != nil {
		return ctx.JSON(utils.ErrIpt("输入有误", err.Error()))
	}

	mod := dao.ArticleDao.ArticleAdd(article)
	return ctx.JSON(utils.Succ("succ", mod))
}

func ArticleUpdate(ctx echo.Context) error {
	id := ctx.Param("id")
	article := &model.Article{}
	if err := ctx.Bind(article); err != nil {
		return ctx.JSON(utils.ErrIpt("输入有误", err.Error()))
	}
	intId, _ := strconv.Atoi(id)
	mod := dao.ArticleDao.ArticleUpdate(intId, article)
	return ctx.JSON(utils.Succ("succ", mod))
}

func ArticleStateUpdate(ctx echo.Context) error {
	id := ctx.QueryParam("id")
	state := ctx.QueryParam("state")
	mod := dao.ArticleDao.ArticleStateUpdate(id, state)
	return ctx.JSON(utils.Succ("succ", mod))
}

func Archive(ctx echo.Context) error {
	result := dao.ArticleDao.Archive()
	return ctx.JSON(utils.Succ("succ", result))
}
